using System;
using System.Collections.Generic;
using ns26;
using ns27;
using Triton.Game.Mono;

namespace Triton.Game.Mapping
{
	[Attribute38("GraphicsManager")]
	public class GraphicsManager : MonoBehaviour
	{
		public struct GPULimits
		{
			public int highPrecisionBits;

			public int mediumPrecisionBits;

			public int lowPrecisionBits;

			public int maxFragmentTextureUnits;

			public int maxVertexTextureUnits;

			public int maxCombinedTextureUnits;

			public int maxTextureSize;

			public int maxCubeMapSize;

			public int maxRenderBufferSize;

			public int maxFragmentUniforms;

			public int maxVertexUniforms;

			public int maxVaryings;

			public int maxVertexAttribs;
		}

		public struct RECT
		{
			public int Left;

			public int Top;

			public int Right;

			public int Bottom;
		}

		public static int ANDROID_MIN_DPI_HIGH_RES_TEXTURES => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "GraphicsManager", "ANDROID_MIN_DPI_HIGH_RES_TEXTURES");

		public static int DRAGGING_TARGET_FRAMERATE => MonoClass.smethod_6<int>(TritonHs.MainAssemblyPath, "", "GraphicsManager", "DRAGGING_TARGET_FRAMERATE");

		public GraphicsQuality m_GraphicsQuality => method_2<GraphicsQuality>("m_GraphicsQuality");

		public bool m_RealtimeShadows => method_2<bool>("m_RealtimeShadows");

		public List<GameObject> m_DisableLowQualityObjects => method_3<Class271<GameObject>>("m_DisableLowQualityObjects")?.method_25();

		public int m_targetFramerate => method_2<int>("m_targetFramerate");

		public int m_winPosX => method_2<int>("m_winPosX");

		public int m_winPosY => method_2<int>("m_winPosY");

		public ResizeManager m_resizeManager => method_3<ResizeManager>("m_resizeManager");

		public GraphicsQuality RenderQualityLevel => method_11<GraphicsQuality>("get_RenderQualityLevel", Array.Empty<object>());

		public bool RealtimeShadows => method_11<bool>("get_RealtimeShadows", Array.Empty<object>());

		public GraphicsManager(IntPtr address, string className)
			: base(address, className)
		{
		}

		public GraphicsManager(IntPtr address)
			: this(address, "GraphicsManager")
		{
		}

		public static GraphicsManager Get()
		{
			return MonoClass.smethod_15<GraphicsManager>(TritonHs.MainAssemblyPath, "", "GraphicsManager", "Get", Array.Empty<object>());
		}

		public static bool SetWindowPos(IntPtr hwnd, int hWndInsertAfter, int x, int Y, int cx, int cy, int wFlags)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "GraphicsManager", "SetWindowPos", new object[7] { hwnd, hWndInsertAfter, x, Y, cx, cy, wFlags });
		}

		public static IntPtr FindWindow(string className, string windowName)
		{
			return MonoClass.smethod_14<IntPtr>(TritonHs.MainAssemblyPath, "", "GraphicsManager", "FindWindow", new object[2] { className, windowName });
		}

		public static bool SetWindowPosition(int x, int y, int resX, int resY)
		{
			return MonoClass.smethod_14<bool>(TritonHs.MainAssemblyPath, "", "GraphicsManager", "SetWindowPosition", new object[4] { x, y, resX, resY });
		}

		public static IntPtr GetForegroundWindow()
		{
			return MonoClass.smethod_14<IntPtr>(TritonHs.MainAssemblyPath, "", "GraphicsManager", "GetForegroundWindow", Array.Empty<object>());
		}

		public static IntPtr GetActiveWindow()
		{
			return MonoClass.smethod_14<IntPtr>(TritonHs.MainAssemblyPath, "", "GraphicsManager", "GetActiveWindow", Array.Empty<object>());
		}

		public static List<int> GetWindowPosition()
		{
			return MonoClass.smethod_15<Class250<int>>(TritonHs.MainAssemblyPath, "", "GraphicsManager", "GetWindowPosition", Array.Empty<object>())?.method_25();
		}

		public void Awake()
		{
			method_8("Awake");
		}

		public void OnDestroy()
		{
			method_8("OnDestroy");
		}

		public void Start()
		{
			method_8("Start");
		}

		public void Update()
		{
			method_8("Update");
		}

		public void CheckPosition(int posX, int posY)
		{
			method_8("CheckPosition", posX, posY);
		}

		public void SetDraggingFramerate(bool isDragging)
		{
			method_8("SetDraggingFramerate", isDragging);
		}

		public void RegisterLowQualityDisableObject(GameObject lowQualityObject)
		{
			method_8("RegisterLowQualityDisableObject", lowQualityObject);
		}

		public void DeregisterLowQualityDisableObject(GameObject lowQualityObject)
		{
			method_8("DeregisterLowQualityDisableObject", lowQualityObject);
		}

		public bool isVeryLowQualityDevice()
		{
			return method_11<bool>("isVeryLowQualityDevice", Array.Empty<object>());
		}

		public GPULimits GetGPULimits()
		{
			return method_11<GPULimits>("GetGPULimits", Array.Empty<object>());
		}

		public void InitializeScreen()
		{
			method_8("InitializeScreen");
		}

		public void UpdateQualitySettings()
		{
			method_8("UpdateQualitySettings");
		}

		public void SetScreenResolution(int width, int height, bool fullscreen)
		{
			method_8("SetScreenResolution", width, height, fullscreen);
		}

		public void OnResolutionChanged(int width, int height)
		{
			method_8("OnResolutionChanged", width, height);
		}

		public void UpdateAntiAliasing()
		{
			method_8("UpdateAntiAliasing");
		}

		public void UpdateRenderQualitySettings()
		{
			method_8("UpdateRenderQualitySettings");
		}

		public void SetScreenEffects()
		{
			method_8("SetScreenEffects");
		}

		public void SetQualityByName(string qualityName)
		{
			method_8("SetQualityByName", qualityName);
		}

		public void LogSystemInfo()
		{
			method_8("LogSystemInfo");
		}

		public void LogGPULimits()
		{
			method_8("LogGPULimits");
		}
	}
}
